<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta name="generator" content="HTML Tidy, see www.w3.org" />

    <title>Manual Page: ab - Apache HTTP Server</title>
  </head>
  <!-- Background white, links blue (unvisited), navy (visited), red (active) -->

  <body bgcolor="#ffffff" text="#000000" link="#0000ff"
  vlink="#000080" alink="#ff0000">
    <!--#include virtual="header.html" -->

    <h1 align="center">Manual Page: ab</h1>
    <!-- This document was autogenerated from the man page -->
<pre>
<strong>NAME</strong>
     ab - Apache HTTP server benchmarking tool

<strong>SYNOPSIS</strong>
     <strong>ab</strong> [ -<strong>k</strong> ] [ -<strong>i</strong> ] [ -<strong>n</strong> <em>requests</em> ] [ -<strong>t</strong> <em>timelimit</em> ] [ -<strong>c</strong>  <em>con-</em>
     <em>currency</em>   ]   [   -<strong>p</strong>   <em>POST   file</em>   ]  [  -<strong>A</strong>  <em>Authenticate</em>
     <em>username</em>:<em>password </em>   ]    [    -<strong>P  </strong>   <em>Proxy     Authenticate</em>
     <em>username</em>:<em>password</em>  ]  [  -<strong>H</strong>  <em>Custom  header</em>  ]  [  -<strong>C</strong> <em>Cookie</em>
     <em>name</em>=<em>value</em> ] [ -<strong>T</strong> <em>content</em>-<em>type</em> ] [ -<strong>v</strong> <em>verbosity</em>  ]  [  -<strong>w</strong>
     <em>output HTML</em> ] [ -<strong>x</strong> &lt;<em>table</em>&gt; <em>attributes</em> ] [ -<strong>X</strong> <em>proxy[:port]</em> ]
     [ -<strong>y</strong> &lt;<em>tr</em>&gt; <em>attributes  </em>   ]   [     -<strong>z</strong>  &lt;<em>td</em>&gt;  <em>attributes  </em> ]
     [<em>http</em>://]<em>hostname</em>[:<em>port</em>]/<em>path</em>

     <strong>ab</strong> [ -<strong>V</strong> ] [ -<strong>h</strong> ]

<strong>DESCRIPTION</strong>
     <strong>ab</strong> is a tool for benchmarking the performance of your Apache
     HyperText  Transfer Protocol (HTTP) server.  It does this by
     giving you an indication of how  many  requests  per  second
     your Apache installation can serve.

<strong>OPTIONS</strong>
     -<strong>k       </strong>   Enable the HTTP KeepAlive feature; that is, per-
                 form  multiple requests within one HTTP session.
                 Default is no KeepAlive.

     -<strong>i       </strong>   Use an HTTP 'HEAD' instead of  the  GET  method.
                 Cannot be mixed with POST.

     -<strong>n</strong> <em>requests</em> The number of requests to perform for the bench-
                 marking session.  The default is to perform just
                 one  single  request,  which   will   not   give
                 representative benchmarking results.

     -<strong>t</strong> <em>timelimit</em>
                 The number of  seconds  to  spend  benchmarking.
                 Using  this  option automatically set the number
                 of requests  for  the  benchmarking  session  to
                 50000.   Use  this to benchmark the server for a
                 fixed period of time.  By default, there  is  no
                 timelimit.

     -<strong>c</strong> <em>concurrency</em>
                 The number of simultaneous requests to  perform.
                 The default is to perform one HTTP request at a
                 time, that is, no concurrency.

     -<strong>p</strong> <em>POST file</em>
                 A file containing data  that  the  program  will
                 send  to  the  Apache  server  in  any HTTP POST
                 requests. The contents of the file  should  look
                 like  <code>name=value&amp;something=other</code>,  with  special
                 characters URL encoded.

     -<strong>A</strong> <em>Authorization username</em>:<em>password</em>
                 Supply Basic Authentication credentials  to  the
                 server.  The username and password are separated
                 by a single ':', and  sent  as  uuencoded  data.
                 The  string  is  sent  regardless of whether the
                 server needs it; that is, has sent a 401 Authen-
                 tication needed.

     -<strong>P</strong> <em>Proxy</em>-<em>Authorization username</em>:<em>password</em>
                 Supply Basic  Authentication  credentials  to  a
                 proxy  en-route.  The  username and password are
                 separated by a single ':', and sent as uuencoded
                 data.   The string is sent regardless of whether
                 the proxy needs it; that  is,  has  sent  a  407
                 Proxy authentication needed.

     -<strong>C</strong> <em>Cookie name</em>=<em>value</em>
                 Add a 'Cookie:' line to the request.  The  argu-
                 ment  is  typically  a  'name=value'  pair. This
                 option may be repeated.

     -<strong>H</strong> <em>Header string</em>
                 Append extra headers to the request.  The  argu-
                 ment  is typically in the form of a valid header
                 line, usually  a  colon  separated  field  value
                 pair,     for     example,     'Accept-Encoding:
                 zip/zop;8bit'.

     -<strong>T</strong> <em>content</em>-<em>type</em>
                 The content-type header to use for POST data.

     -<strong>v       </strong>   Sets the verbosity level.   Level  4  and  above
                 prints information on headers, level 3 and above
                 prints response codes (for example,  404,  200),
                 and level 2 and above prints warnings and infor-
                 mational messages.

     -<strong>w       </strong>   Print out results in HTML tables.   The  default
                 table  is  two  columns wide, with a white back-
                 ground.

     -<strong>x</strong> <em>attributes</em>
                 The string to use  as  attributes  for  &lt;table&gt;.
                 Attributes are inserted &lt;table <strong>here</strong> &gt;

     -<strong>X</strong> <em>proxy:port</em>
                 Use the specified proxy server, running on the
                 specified port.

     -<strong>y</strong> <em>attributes</em>
                 The string to use as attributes for &lt;tr&gt;.

     -<strong>z</strong> <em>attributes</em>
                 The string to use as attributes for &lt;td&gt;.

     -<strong>V       </strong>   Display the version number and exit.

     -<strong>h       </strong>   Display usage information.

<strong>BUGS</strong>
     There are  various  statically  declared  buffers  of  fixed
     length.  Combined  with  inefficient  parsing of the command
     line arguments, the response headers from  the  server,  and
     other external inputs, these buffers might overflow.

     <strong>Ab</strong> does not  implement  HTTP/1.x  fully;  instead,  it  only
     accepts some 'expected' forms of responses.

     The rather heavy use of <strong>strstr(3)</strong> by the  program  may  skew
     performance   results,   since   it   uses  significant  CPU
     resources.  Make sure that performance limits are not hit by
     <strong>ab</strong> before your server's limit is reached.

<strong>SEE ALSO</strong>
     <strong>httpd(8)</strong>

</pre>
    <!--#include virtual="footer.html" -->
  </body>
</html>

